def upgrader(cpt):
    """
    Update the checkpoint to support initial SVE implemtation.
    The updater is taking the following steps.

    1) Set isa.haveSVE to false
    2) Set isa.sveVL to 1
    3) Add SVE misc registers in the checkpoint
    """
    if cpt.get("root", "isa", fallback="") == "arm":
        for sec in cpt.sections():
            import re

            # Search for all ISA sections
            if re.search(".*sys.*\.cpu.*\.isa$", sec):

                # haveSVE = false
                cpt.set(sec, "haveSVE", "false")

                # sveVL (sve Vector Length in quadword) = 1
                # (This is a dummy value since haveSVE is set to false)
                cpt.set(sec, "sveVL", "1")

                # Updating SVE misc registers (dummy values)
                mr = cpt.get(sec, "miscRegs").split()
                if len(mr) == 820:
                    print(
                        "MISCREG_SVE registers already seems "
                        "to be inserted."
                    )
                else:
                    # Replace MISCREG_FREESLOT_1 with MISCREG_ID_AA64ZFR0_EL1
                    mr[-1] = 0

                    mr.append(0)
                    # Add dummy value for MISCREG_ZCR_EL3
                    mr.append(0)
                    # Add dummy value for MISCREG_ZCR_EL2
                    mr.append(0)
                    # Add dummy value for MISCREG_ZCR_EL12
                    mr.append(0)
                    # Add dummy value for MISCREG_ZCR_EL1
                    cpt.set(sec, "miscRegs", " ".join(str(x) for x in mr))


legacy_version = 15
